home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 2: Applications / Linux Cubed Series 2 - Applications.iso / editors / emacs / xemacs / xemacs-1.006 / xemacs-1 / lib / xemacs-19.13 / lisp / hyperbole / hui-ep-but.el < prev    next >
Encoding:
Text File  |  1995-04-17  |  11.5 KB  |  221 lines

  1. ;;!emacs
  2. ;;
  3. ;; FILE:         hui-ep-but.el
  4. ;; SUMMARY:      Support for highlighting/flashing buttons under Epoch.
  5. ;; USAGE:        Epoch V4 Lisp Library
  6. ;; KEYWORDS:     faces, hypermedia
  7. ;;
  8. ;; AUTHOR:       Bob Weiner
  9. ;; ORG:          Brown U.
  10. ;;
  11. ;; ORIG-DATE:    27-Apr-91 at 05:37:10
  12. ;; LAST-MOD:     14-Apr-95 at 16:10:47 by Bob Weiner
  13. ;;
  14. ;; This file is part of Hyperbole.
  15. ;; It is for use with Epoch, a modified version of GNU Emacs.
  16. ;; Available for use and distribution under the same terms as GNU Emacs.
  17. ;;
  18. ;; Copyright (C) 1990-1995, Free Software Foundation, Inc.
  19. ;; Developed with support from Motorola Inc.
  20. ;;
  21. ;; DESCRIPTION:  
  22. ;;
  23. ;;   This is truly prototype code.
  24. ;;
  25. ;;   Can't use epoch read-only buttons here because then outline-mode
  26. ;;   becomes unusable; when it tries to do a 'subst-char-in-region'
  27. ;;   epoch triggers a read-only error.
  28. ;;
  29. ;; DESCRIP-END.
  30.  
  31. (if (and (boundp 'epoch::version) (stringp epoch::version)
  32.      (or noninteractive (string-lessp epoch::version "Epoch 4")))
  33.     nil
  34.   (error "(hui-ep-but.el): Load only under Epoch version 3 or lower."))
  35.  
  36. ;;; ************************************************************************
  37. ;;; Other required Elisp libraries
  38. ;;; ************************************************************************
  39.  
  40. (require 'hbut)
  41.  
  42. ;;; ************************************************************************
  43. ;;; Public variables
  44. ;;; ************************************************************************
  45.  
  46. ;;; ************************************************************************
  47. ;;; Public functions
  48. ;;; ************************************************************************
  49.  
  50. (fset 'hproperty:but-add 'epoch::add-button)
  51.  
  52. (defun hproperty:but-color ()
  53.   "Return current color of buffer's buttons."
  54.   (if hproperty:color-ptr
  55.       (car hproperty:color-ptr)
  56.     (epoch::foreground)))
  57.  
  58. (defun hproperty:but-create-all (&optional start-delim end-delim regexp-match)
  59.   "Mark all hyper-buttons in buffer as Epoch buttons, for later highlighting.
  60. Will use optional strings START-DELIM and END-DELIM instead of default values.
  61. If END-DELIM is a symbol, e.g. t, then START-DELIM is taken as a regular
  62. expression which matches an entire button string.
  63. If REGEXP-MATCH is non-nil, only buttons matching this argument are
  64. highlighted."
  65.   (ebut:map (function (lambda (lbl start end)
  66.             (hproperty:but-add start end hproperty:but)))
  67.         start-delim end-delim regexp-match 'include-delims))
  68.            
  69. (defun hproperty:but-delete (&optional pos)
  70.   (epoch::delete-button-at (or pos (point))))
  71.  
  72. ;;; ************************************************************************
  73. ;;; Private functions
  74. ;;; ************************************************************************
  75.  
  76. (defmacro hproperty:list-cycle (list-ptr list)
  77.   "Move LIST-PTR to next element in LIST or when at end to first element."
  78.   (` (or (and (, list-ptr)
  79.           (setq (, list-ptr) (cdr (, list-ptr))))
  80.      (setq (, list-ptr) (, list)))))
  81.  
  82. ;;; ************************************************************************
  83. ;;; Private variables
  84. ;;; ************************************************************************
  85.  
  86. (defconst hproperty:color-list '( "red" "blue" "paleturquoise4" "mediumpurple2"
  87. "lightskyblue3" "springgreen2" "salmon" "yellowgreen" "darkorchid2"
  88. "aquamarine4" "slateblue4" "slateblue1" "olivedrab1" "goldenrod4"
  89. "goldenrod3" "cadetblue2" "burlywood1" "slategrey" "mistyrose"
  90. "limegreen" "lightcyan" "goldenrod" "gainsboro" "skyblue1" "honeydew"
  91. "yellow2" "tomato3" "skyblue" "purple4" "orange3" "bisque3" "bisque2"
  92. "grey34" "gray99" "gray63" "gray44" "gray37" "gray33" "gray26" "azure1"
  93. "snow4" "peru" "red" "lightgoldenrod4" "mediumseagreen" "blush"
  94. "mediumorchid2" "lightskyblue1" "darkslateblue" "midnightblue"
  95. "lightsalmon1" "lemonchiffon" "yellow" "lightsalmon" "coral"
  96. "dodgerblue3" "darkorange4" "blue" "royalblue4" "red" "green" "cyan"
  97. "darkviolet" "darksalmon" "darkorange" "blue" "pink" "magenta2"
  98. "sienna4" "khaki2" "grey75" "grey74" "grey73" "grey69" "grey68" "grey35"
  99. "grey13" "gray90" "gray81" "gray55" "gray51" "gray31" "snow2" "pink3"
  100. "grey7" "gray1" "red4" "red3" "tan" "red" "yellow" "mediumvioletred"
  101. "lightslategrey" "lavenderblush4" "turquoise" "darkturquoise"
  102. "darkslategrey" "lightskyblue" "lightsalmon4" "lightsalmon3"
  103. "forestgreen" "dodgerblue4" "orchid" "rosybrown4" "brown" "peachpuff3"
  104. "palegreen3" "orangered2" "rose" "lightcyan4" "indianred4" "indianred3"
  105. "seagreen2" "indianred" "deeppink1" "navyblue" "lavender" "grey"
  106. "deeppink" "salmon4" "salmon3" "oldlace" "grey78" "grey77" "grey54"
  107. "grey45" "grey21" "gray97" "gray96" "gray95" "gray88" "gray87" "gray86"
  108. "gray70" "gray57" "gray38" "gray12" "gray11" "plum3" "linen" "gray9"
  109. "gray8" "blue4" "beige" "turquoise" "blue" "lemonchiffon4"
  110. "darkseagreen1" "antiquewhite3" "mediumorchid" "springgreen"
  111. "turquoise4" "steelblue3" "mistyrose2" "lightcyan2" "red" "firebrick2"
  112. "royalblue" "cadetblue" "skyblue3" "yellow3" "salmon1" "orange4"
  113. "hotpink" "grey90" "gray56" "gray39" "gray18" "gray14" "plum4" "grey6"
  114. "gray6" "gold3" "gold1" "blue2" "tan2" "cyan" "mediumspringgreen"
  115. "darkolivegreen2" "goldenrod" "lightsteelblue" "brown" "whip"
  116. "chartreuse3" "violetred4" "royalblue2" "royalblue1" "papayawhip"
  117. "mistyrose3" "lightcyan1" "aquamarine" "skyblue4" "hotpink4" "hotpink3"
  118. "hotpink2" "dimgray" "tomato" "grey66" "grey65" "grey64" "grey33"
  119. "grey27" "gray76" "gray69" "gray68" "grey0" "azure" "green"
  120. "darkgoldenrod4" "darkgoldenrod3" "darkgoldenrod2" "darkgoldenrod"
  121. "brown" "lightsalmon2" "deepskyblue4" "deepskyblue3" "deepskyblue2"
  122. "deepskyblue" "darkorange1" "violetred3" "violetred2" "violetred1"
  123. "slateblue3" "slateblue2" "drab" "indianred1" "firebrick1" "cadetblue4"
  124. "violetred" "rosybrown" "blue" "firebrick" "grey100" "wheat4" "grey79"
  125. "grey76" "grey61" "gray93" "gray84" "gray65" "gray36" "gray32" "gray13"
  126. "gray10" "azure3" "snow1" "tan1" "gray" "darkolivegreen1" "blue"
  127. "almond" "lavenderblush3" "lavenderblush2" "lavenderblush1"
  128. "darkolivegreen" "lavenderblush" "aquamarine2" "red" "olivedrab2"
  129. "mistyrose4" "mistyrose1" "lightcyan3" "lightcoral" "chartreuse"
  130. "peachpuff" "palegreen" "mintcream" "skyblue2" "moccasin" "tomato1"
  131. "orchid3" "maroon3" "salmon" "grey81" "grey62" "grey39" "grey38"
  132. "grey37" "gray92" "gray83" "gray66" "gray54" "gray50" "gray30" "gray19"
  133. "gray15" "azure4" "grey3" "tan3" "pink" "gray" "blue" "lightsteelblue2"
  134. "lightsteelblue1" "green" "lightslategray" "lemonchiffon2"
  135. "springgreen1" "greenyellow" "chartreuse2" "grey" "royalblue3"
  136. "powderblue" "peachpuff2" "palegreen2" "cream" "slateblue" "seashell2"
  137. "deeppink2" "darkkhaki" "maroon4" "sienna" "grey71" "grey67" "grey18"
  138. "gray59" "gray43" "gray25" "bisque" "red1" "mediumslateblue"
  139. "lightgoldenrod1" "goldenrod" "paleturquoise3" "lightskyblue4" "green"
  140. "yellow" "smoke" "blue" "white" "steelblue4" "rosybrown3" "peachpuff1"
  141. "palegreen1" "blueviolet" "seashell4" "sienna3" "grey40" "gray91"
  142. "gray82" "gray5" "cyan2" "cyan1" "blue1" "snow" "lightgoldenrod2"
  143. "lightslateblue" "mediumorchid3" "darkseagreen4" "springgreen3" "green"
  144. "slategray4" "slategray3" "slategray2" "blue" "peachpuff4" "palegreen4"
  145. "green" "orangered3" "goldenrod1" "ghostwhite" "firebrick4" "firebrick3"
  146. "cadetblue3" "slategray" "seashell3" "honeydew3" "cornsilk4" "cornsilk2"
  147. "purple1" "dimgrey" "khaki1" "ivory3" "grey70" "grey60" "grey32"
  148. "grey22" "grey12" "gray98" "gray89" "gray71" "gray64" "gray60" "gray49"
  149. "azure2" "gray3" "paleturquoise1" "mediumpurple1" "purple"
  150. "lemonchiffon1" "blue" "navajowhite3" "darkorchid1" "orange"
  151. "goldenrod2" "khaki" "chocolate2" "burlywood2" "honeydew1" "darkgreen"
  152. "thistle3" "thistle2" "thistle1" "thistle" "maroon2" "maroon1" "grey53"
  153. "grey44" "grey25" "gray74" "gray45" "gray41" "gray35" "gray27" "gray23"
  154. "gray16" "brown4" "wheat" "coral" "tan4" "lightgoldenrodyellow" "blue"
  155. "green" "gray" "palevioletred3" "mediumpurple4" "mediumpurple3"
  156. "saddlebrown" "blue" "darkorchid4" "darkorchid3" "puff" "olivedrab4"
  157. "lightblue4" "lightpink" "lightgray" "honeydew2" "cornsilk1" "lace"
  158. "sienna1" "bisque4" "orchid" "khaki3" "grey84" "grey83" "grey82"
  159. "grey72" "grey52" "grey43" "grey26" "grey14" "grey10" "gray75" "gray53"
  160. "gray21" "gray20" "brown3" "grey8" "red2" "navy" "grey" "gold"
  161. "mediumaquamarine" "lightgoldenrod" "darkslategray4" "darkseagreen3"
  162. "darkseagreen2" "antiquewhite4" "white" "springgreen4" "lightyellow4"
  163. "white" "aquamarine1" "turquoise3" "steelblue2" "rosybrown2" "pink"
  164. "gray" "indianred2" "dodgerblue" "green" "seagreen1" "deeppink4"
  165. "aliceblue" "magenta1" "pink" "sienna2" "orchid1" "gray100" "grey97"
  166. "grey94" "grey87" "grey86" "grey51" "grey42" "grey19" "gray94" "gray85"
  167. "gray61" "brown2" "khaki" "grey1" "gold4" "blue" "green" "grey"
  168. "turquoise" "paleturquoise" "mediumorchid4" "antiquewhite2"
  169. "lightyellow2" "violet" "salmon" "chartreuse1" "turquoise1" "sandybrown"
  170. "orangered1" "lightpink1" "lightblue2" "lightblue1" "grey" "seagreen4"
  171. "seagreen3" "lightblue" "deeppink3" "burlywood" "seashell" "hotpink1"
  172. "gray" "yellow4" "yellow" "purple" "orange" "ivory4" "grey99" "grey89"
  173. "grey63" "grey58" "grey49" "grey31" "grey24" "grey20" "green4" "green1"
  174. "gray73" "gray67" "coral3" "coral2" "plum2" "pink4" "ivory" "gray4"
  175. "gray2" "gold2" "aquamarine" "grey" "lightgoldenrod3" "darkolivegreen3"
  176. "darkgoldenrod1" "goldenrod" "orchid" "chiffon" "navajowhite4"
  177. "deepskyblue1" "lightyellow" "floralwhite" "blue" "mediumblue"
  178. "chocolate4" "chocolate3" "burlywood4" "turquoise" "steelblue" "green"
  179. "lawngreen" "honeydew4" "seagreen" "orchid4" "wheat1" "violet" "ivory1"
  180. "grey88" "grey85" "grey57" "grey56" "grey55" "grey48" "grey47" "grey46"
  181. "grey30" "grey17" "gray47" "gray29" "pink2" "grey5" "grey4" "green"
  182. "gray0" "brown" "lightsteelblue4" "darkolivegreen4" "palevioletred4"
  183. "blue" "darkslategray3" "darkslategray2" "darkslategray1"
  184. "blanchedalmond" "palegoldenrod" "blue" "lightseagreen" "lemonchiffon3"
  185. "darkslategray" "green" "darkseagreen" "antiquewhite" "darkorange2"
  186. "chartreuse4" "blue" "rosybrown1" "olivedrab3" "lightpink2" "orangered"
  187. "thistle4" "blue" "cornsilk" "salmon2" "orchid2" "ivory2" "grey93"
  188. "grey92" "grey91" "grey36" "grey29" "grey28" "grey16" "gray79" "gray78"
  189. "gray77" "gray48" "gray17" "coral4" "coral1" "plum1" "pink1" "grey9"
  190. "grey2" "gray7" "cyan4" "blue3" "plum" "cornflowerblue" "lightskyblue2"
  191. "antiquewhite1" "navajowhite2" "navajowhite1" "lightyellow3"
  192. "navajowhite" "darkorange3" "whitesmoke" "turquoise2" "steelblue1"
  193. "lightpink4" "lightblue3" "green" "chocolate1" "blue" "olivedrab"
  194. "lightgrey" "chocolate" "magenta4" "magenta3" "yellow1" "purple3"
  195. "purple2" "orange2" "orange1" "magenta" "bisque1" "wheat2" "maroon"
  196. "khaki4" "grey96" "grey95" "grey80" "grey50" "grey41" "grey15" "grey11"
  197. "gray80" "gray58" "gray40" "gray34" "gray22" "brown1" "snow3"
  198. "mediumturquoise" "lightsteelblue3" "palevioletred2" "palevioletred1"
  199. "paleturquoise2" "green" "palevioletred" "mediumorchid1" "white"
  200. "mediumpurple" "lightyellow1" "dodgerblue2" "dodgerblue1" "violet"
  201. "aquamarine3" "slategray1" "gray" "orangered4" "lightpink3" "blue"
  202. "darkorchid" "cadetblue1" "burlywood3" "seashell1" "cornsilk3" "tomato4"
  203. "tomato2" "wheat3" "grey98" "grey59" "grey23" "green3" "green2" "gray72"
  204. "gray62" "gray52" "gray46" "gray42" "gray28" "gray24" "white" "cyan3"
  205. "black" ))
  206.  
  207. (defvar hproperty:color-ptr nil
  208.   "Pointer to current color name table to use for Hyperbole buttons in Epoch.")
  209.  
  210. (defconst hproperty:good-colors
  211.   '(
  212.     "medium violet red" "indianred4" "firebrick1" "DarkGoldenrod" "NavyBlue"
  213.     "darkorchid" "tomato3" "mediumseagreen" "deeppink" "forestgreen"
  214.     "mistyrose4" "slategrey" "purple4" "dodgerblue3" "mediumvioletred"
  215.     "lightsalmon3" "orangered2" "turquoise4" "Gray55"
  216.     )
  217.   "Good colors for contrast against wheat background and black foreground.")
  218.  
  219. (provide 'hui-ep-but)
  220.  
  221.